The User Interface (UI) of an application includes a large number of elements such as dialogs (e.g. pop-up windows, screens etc.) each of which may contain one or more controls, such as text areas or boxes, buttons with text etc. As a product is developed, the UI element changes and this can introduce defects or bugs in the UI which could well lead to critical failure of the application. Aggravating the problem is that application developers are under pressure to continually add new features, update the UI, and release new versions of applications. As a result, it is rarely the case that the original test script can adequately test the subsequent revised application.
The existing works have recognized that manually testing the UI applications is tedious, error prone, and arduous. Thus, a majority of existing solutions relies on automating testing of the UI applications. In order to automate testing of UI applications, test engineers write programs using scripting languages (e.g., JavaScript and VBScript). Writing UI automation test scripts is a challenging activity requiring sound working knowledge of the test scripting language being used to write the test cases. Further, manually writing UI Automation test cases require considerable trial and error and effort consuming. Additionally, in case of any updates or modifications in the test scripting language syntax or requirement to write the test scripts in a different scripting language significant amount of effort is involved owing to rework.
Furthermore, the conventional techniques requires that test data for manual automation test cases should necessarily be manually specified for each test case which makes creating regression tests using same test case with different test data a tedious and effort consuming activity.
The aforementioned testing problems are compounded by the fact that the same application is expected to operate identically on a number of different computer operating systems. For example, a Windows application is typically expected to work with all, or most of the Microsoft operating systems currently in use by the public.
Some of the prior art literatures disclose generating test cases directly from user interfaces. The process of generating test cases directly from the user interfaces are technology or platform driven and not technology or platform independent which substantially increases the effort required for implementing, maintaining or migrating the test cases. Additionally, implementing, maintaining or migrating the test cases become more challenging in the event of UI undergoing changes.
The other set of prior art literatures utilizes abstract models for test script generation i.e. implementing model based test code generation for software testing. However, the prior art literatures implement techniques for generating test scripts directly from the existing and already running applications. Generation of test scripts directly from the running applications have the drawback of reduced customizability with which the test scripts are executed. Another impediment of the existing arts lies in automating the generation of test cases for testing the UI models during runtime.
It would be advantageous if the model driven generation techniques could be leveraged in a manner such that the test case specification is segregated from the implementation. There lies a need to have a mechanism to automate generation of test cases with better customizability in terms of independence from technology, platform, scripting language and the likes. Thus, leveraging model driven techniques for automatic generation and validation of test cases are still considered as one of the biggest challenges of the technical domain.